Приложение 5. Обработка ошибок

При формировании текста сообщения об ошибке используется следующий алгоритм:

● Из цепочки возникших исключений извлекается самое вложенное исключение (т. е. самое первое исключение).

● Текст описания самого первого исключения используется для краткого представления ошибки:

● При этом для ошибок компиляции модулей в краткое представление включен текст, связанный с местоположением возникновения ошибки (строка в модуле).

● Для краткого представления ошибок времени выполнения используется текст без подробностей возникновения ошибки (строки в модуле).

● Краткое представление ошибки отображается в диалоге, отображаемом пользователю. В этом диалоге возможно наличие кнопки Подробно…, если выполняются следующие условия:

● включен режим отладки,

● ошибка встроенного языка,

● наличие более одного исключения в цепочке.

● Подробное представление ошибки формируется из описаний всех исключений цепочки.

Если диалог с ошибкой не содержит кнопку Подробно… и ошибка является критической (работа программы не может быть продолжена), то в этом диалоге будет находиться гиперссылка Показать информацию для технической поддержки.

При нажатии кнопки Подробно… будет открыто дополнительное окно, в котором будет содержаться подробное представление ошибки и дополнительная кнопка Конфигуратор…, если в диалоге отображается ошибка встроенного языка.

Во время работы тонкого клиента или веб-клиента в клиент-серверном варианте работы обрабатываются следующие ошибочные ситуации:

● Если при начале работы системы обнаружена установленная блокировка соединений с информационной базой, то отображается сообщение об ошибке с возможностью повтора соединения.

● В случае несовпадения версии сервера и клиентского приложения отображается сообщение об ошибке с возможностью выполнить перезапуск.

● При отсутствии прав на запуск тонкого клиента поведение зависит от использования команды AppAutoCheckMode:

● Если команда была указана при запуске, производится автоматическая попытка запуска толстого клиента.

● Если команда не был указана при запуске, отображается окно с сообщением об ошибке (без возможности перезапуска).

● При невозможности соединения с сервером «1С:Предприятия» (или веб-сервером) для запросов, допускающих повторную отправку, и для запросов, выполняемых до начала сеанса, отображается сообщение об ошибке с возможностью повторить запрос или отказаться от попытки. При отказе от повторения запроса «1С:Предприятие» не завершает свою работу. Если же запрос не допускает повторной отправки, отображается окно с сообщением об ошибке и возможность выполнить перезапуск.

● Если ошибка произошла в процессе обработки запроса на сервере, отображается окно с сообщением об ошибке и возможность выполнить перезапуск.

● При ошибке работы с сеансом (например, сеанс был удален администратором) отображается окно с сообщением об ошибке, и предоставляется возможность выполнить перезапуск.

При возникновении внутренней ошибки платформы веб-клиент формирует ошибку вида: Неизвестная ошибка: <описание ошибки>.

Если для подключения к информационной базе используется веб-клиент или тонкий клиент, подключенный через веб-сервер, то при возникновении нештатных ситуаций используются следующие коды ошибок:

400 Bad Request ‑ описывает ошибки прикладного решения, которые не имеют критических последствий для работы клиентского приложения (включая все исключения времени выполнения). Нельзя перехватывать для отображения пользователю.

500 Internal Server Error ‑ описывает ошибки прикладного решения, имеющие критические последствия для клиентского приложения, например:

● исключения базы данных, являющиеся невосстановимыми;

● исключения, связанные с удалением сеанса или отсутствием данных сеанса.

502 Bad gateway ‑ описывает ошибки кластера серверов или регламентных операций, имеющие критические последствия для приложения, например, если невозможно установить соединение с сервером «1С:Предприятия».

503 Service Unavailable ‑ описывает ошибки кластера серверов или регламентных операций, имеющие критические последствия для клиентского приложения, например, невозможно установить соединение с сервером СУБД.

Внимание! Для сохранения работоспособности системы, не следует перехватывать ошибки с кодом 400. Ошибки с кодами 50x можно перехватывать для отображения более дружественного сообщения об ошибке.